package com.icinfo.cloud.provider.punish.api.client;

import com.alibaba.fastjson.JSONObject;
import com.icinfo.cloud.provider.punish.common.documentoperate.dto.StageDocCommonOperateSaveDto;
import com.icinfo.cloud.provider.punish.common.electricsent.dto.ConfirmSendSaveDto;
import com.icinfo.cloud.provider.punish.common.electricsent.dto.DocumentSentAddressInfoRequest;
import com.icinfo.cloud.provider.punish.common.electricsent.vo.CaseDocumentSendinfoConfirmVo;
import com.icinfo.cloud.provider.punish.config.dto.ConfigDictionaryInfoQueryDto;
import com.icinfo.cloud.provider.punish.config.dto.RelationWorkflowInfoRequest;
import com.icinfo.cloud.provider.punish.config.vo.ConfigDictionaryInfoVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseDetailInfoQueryDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseDetailInfoVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseDetailSimpleInfoVo;
import com.icinfo.framework.common.web.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @Description 处罚项目客户端
 * @Author zhengqiang
 * @Date 2022/6/15 14:53
 **/
@FeignClient(value = "${unified-punish-case-provider.namespace:}unified-punish-case-provider", contextId = "PunishCaseFeignClient")
public interface PunishCaseFeignClient {


    /**
     * 查询指定数据字典列表信息
     * @param queryDto
     * @return
     */
    @PostMapping("/sys/dictionary/getConfigDictionaryList")
    Result<List<ConfigDictionaryInfoVo>> getConfigDictionaryList(@RequestBody @Validated ConfigDictionaryInfoQueryDto queryDto);

    /**
     * 【V2.0.0】描述：确认送达（根据当事人）
     *
     * @param saveDto {@link ConfirmSendSaveDto}
     * @return {@link Result<String>} 送达结果
     */
    @PostMapping("/punish/common/electric/sent/flow/confirmSend")
    Result<String> confirmSend(@RequestBody @Validated ConfirmSendSaveDto saveDto);

    /**
     * 查询简易处罚案件详情
     *
     * @param: queryDto
     * @return {@link Result<  CaseDetailSimpleInfoVo >}
     **/
    @PostMapping("/punish/ucase/case/main/getCaseDetailSimpleInfo")
    Result<CaseDetailSimpleInfoVo> getCaseDetailSimpleInfo(@RequestBody @Validated CaseDetailInfoQueryDto queryDto);

    /**
     * 【V1.0.0】描述：获取案件详情数据
     *
     * @param queryDto {@link CaseDetailInfoQueryDto}
     * @return {@link Result <CaseMainDetailInfoVo>} 案件详情数据
     */
    @PostMapping("/punish/ucase/case/main/getCaseDetailInfo")
    Result<CaseDetailInfoVo> getCaseDetailInfo(@RequestBody @Validated CaseDetailInfoQueryDto queryDto);

    /**
     * 获取有执法证协办人员列表
     *
     * @return
     **/
    @PostMapping(value = "/punish/ucase/case/register/getAssistHandleList")
    Result getAssistHandleList();

    /**
     * 通过身份证获取用户具体信息
     *
     * @param idCardObj
     * @return Result
     */
    @RequestMapping("/punish/common/getPersonInfoByIdCard")
    Result getPersonInfoByIdCard(@RequestBody JSONObject idCardObj);

}
